package com.lsh.netty.http.xml;

import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpResponse;

import java.util.List;

/**
 * @author ：LiuShihao
 * @date ：Created in 2021/6/9 12:17 下午
 * @desc ：应答消息解码类
 * 客户端接收到HTTP+XML应答消息后，对消息进行解码 获取HttpXmlResponse对象
 *
 * 注意此处：原书中 是DefaultFullHttpResponse，但是测试客户端收不到服务端的应答消息，改为FullHttpResponse可以
 */
public class HttpXmlResponseDecoder extends AbstractHttpXmlDecoder<FullHttpResponse> {

    public HttpXmlResponseDecoder(Class<?> clazz){
        this(clazz,false);
    }
    public HttpXmlResponseDecoder(Class<?> clazz,boolean isPrintLog){
        super(clazz,isPrintLog);
    }

    /**
     * 通过DefaultFullHTTPResponse 和Http应答消息反序列化后的Java对象构造HttpXmlResponse，并将其添加到解码结果列表中
     * @param ctx
     * @param msg
     * @param out
     * @throws Exception
     */
    @Override
    protected void decode(ChannelHandlerContext ctx, FullHttpResponse msg, List<Object> out) throws Exception {
        System.out.println("应答消息解码类："+msg.content());
        HttpXmlResponse resHttpXmlResponse = new HttpXmlResponse(msg, decode0(ctx, msg.content()));
        out.add(resHttpXmlResponse);

    }


}
